home *** CD-ROM | disk | FTP | other *** search
/ United Public Domain Gold 2 / United Public Domain Gold 2.iso / utilities / pu171.dms / pu171.adf / Host / host.lha / host.script < prev    next >
Text File  |  1992-03-04  |  46KB  |  1,349 lines

  1. ;*******************************************************
  2. ; NComm HOST SYSTEM
  3. ; Version see below
  4. ;
  5. ; Copyright © 1989 Daniel Bloch ( ->Ver 1.3)
  6. ; Copyright © 1990-1992 Nils-Arne Dahlberg
  7. ;                FREEWARE!!!!
  8. ;*******************************************************
  9. ; revision history
  10. ; by 1.6 these things are added:
  11. ;       Search for menus, bulletins and messages in separate directories
  12. ;       Private messages for all users
  13. ;    1.7
  14. ;       Private user passwords
  15. ;    1.8
  16. ;       Double menus
  17. ;    1.9
  18. ;       More messages areas
  19. ;    1.91
  20. ;       Packing and download of messages
  21. ;    1.92
  22. ;       UL/DL check
  23. ;    1.93
  24. ;       Remote Backup
  25. ;       Cosysop enabeld
  26. ;    1.94
  27. ;       Using extended hayes setup (all reset z0 gives right setup)
  28. ;    1.95
  29. ;       Removed part of page routine..
  30. ;    1.96
  31. ;       Changes in file menu
  32. ;    1.97
  33. ;       Changes in messages menus
  34. ;       Local mode
  35. ;    1.98
  36. ;       Cleanup, changing sysop/cosysop versions
  37. ;    1.99
  38. ;       Change of dos-commands in SYsop menu
  39. ;       change of sysop password placement
  40. ;    2.00
  41. ;       Changed placement of U/D load credits
  42. ;    2.01
  43. ;       Fixed a bug in placement of $name"DL" files
  44. ;       Added Possibility to grab bulletins
  45. ;       Added "waiting " at up/download
  46. ;    2.02
  47. ;       Changed packing program to variable, use what you want as sysop
  48. ;       'Return' leaves password change.
  49. ;    2.03
  50. ;       Just a bugfix
  51. ;    2.04
  52. ;       Changed timout command to make a 300 s timeout for logon as well
  53. ;    2.05
  54. ;       Made a small change to shorten the file
  55. ;    2.06
  56. ;       Added features: filetransfer with Ymodem-Batch and Ymodem-G
  57. ;       Print version number from main menu
  58. ;    2.07
  59. ;       A special reboot, or break facility included, I might take this
  60. ;       into an later E-script
  61. ;    2.08
  62. ;       Changed for an error when HOLD-directory is missing, this
  63. ;       directory might be missing due to the fact that BU-progs not
  64. ;       allways copies empty directories
  65. ;   2.09
  66. ;       Changed password routine to not accept nil password
  67. ;   2.10
  68. ;       YABH (Yet Another Bug-Hunt...)
  69. ;       Missed two \" in delete comment part...
  70. ;       Added Start Script in Sysop mode....
  71. ;       removed a IF $ -line, line no 680 somewhere....
  72. ;   2.10E
  73. ;       Back in english, again...
  74. ;   2.11E
  75. ;       Some small special features
  76. ;       A user questionare is added, upload for just some users,
  77. ;       a bug in login-sequense is corrected.
  78. ;       The messages editing is made in ram: now
  79. ;
  80. ;   2.12
  81. ;       A few minor modifications: Should now work with DTR-hangup function.
  82. ;       ... and you probably don't have to turn your modem off when you want
  83. ;       to log on locally, the script now sends AT Q1E0 before local logons.
  84. ;       (Changed by Torkel Lodberg [?])
  85. ;
  86. ;   2.20
  87. ;       A version made especially for NComm 2.0
  88. ;       Main differences is a better way to handle the user-info
  89. ;   2.21
  90. ;       Minor bug in login section fixed
  91.  
  92. SET     $version= "2.21Enad, 920301"
  93.  
  94. ;--------------------------------------------
  95. ; Set these variables to fit your needs
  96. ;--------------------------------------------
  97.         SET     $dir    = "NComm:host/"         ;Directory for misc. files
  98.                                                 ;base of all other
  99.         SET     $menudir = $dir"menus/"         ;menus here
  100.         SET     $bulldir = $dir"bulletins/"     ;bulletins here
  101.         SET     $msgsdir = $dir"msgs/"          ;messages here
  102.         SET     $uldir  = $dir"files/"          ;Upload directory
  103.         SET     $dldir  = $dir"files/"          ;Download directory
  104.         SET     $hold   = $dir"hold/"    ;Hold directory
  105.         SET     $apack   = "c:LHARC a "  ;packing command
  106.         SET     $alist   = "c:LHARC l "  ;listing command
  107.         SET     $aextract ="c:LHarc x "  ;extract command
  108.         SET     $arch    = ".lzh"               ;archive extension
  109.         SET     $holdzoo = $dir"files/HOLD"$arch        ;Hold file
  110.         SET     $tmp    = $dir"files/NHS.tmp"   ;Temporary file
  111.         SET     $sysname = "Boringtown BBS"     ;Name of system
  112.         SET     $list   = "C:list"              ;Directory lister
  113.         SET     $qlist  = "C:dir"               ;A quick lister
  114.         SET     $MaxBaud = "2400"               ;Modems Maximum Baud
  115.         SET     $doscomm = $dir"Ckomm/"         ;dos commands for remote
  116.  
  117. ;All files in hold directory will be deleted at initialization!!!
  118.  
  119. ;-------------------- M A I N   P R O G R A M -----------------------;
  120.         message "\f"            ;Clear screen
  121.         REQUEST OFF
  122. main:   clrstack
  123.         gosub   init            ;Initialize various stuff
  124.         gosub   connect         ;Wait for RING and answer the phone
  125.         timeout 300 goto bibi   ;must have it here i think..
  126.         when    "\r\nNO CARRIER\r\n" goto NoCarrier
  127.         gosub   prelog          ;Show opening picture
  128. ;LOGIN gives a returnvariable: $NameOK set to "T" if the name exists
  129. ;and $PassOK is set to true if name and password is OK
  130.         gosub   login           ;Get name & password
  131.         timeout 300 goto bibi   ;must have it here i think..
  132.         if      $PassOK == "T" then goto OK
  133. WrngName:
  134.         send    "Wrong!!\n"
  135.         write   $dir"log" "\n"$date"  "$name"  Wrong password: "$pass"\n"
  136.         gosub   logout
  137.         goto    main
  138.  
  139. ;User has logged in
  140. OK:     write   $dir"log" "\n"$date"  Login: "$name" ("$baud")\n"
  141.         send    "\n\nYour last logout was:"$inLast"\n"
  142.         set     $ULCredit = $inulcredit
  143.         set     $DLCredit = $indlcredit
  144.         set     $Status = $instatus
  145.         if      $insysop == "Sysop" then SET $sysacc = "T"
  146.         if      $insysop == "CoSys" then SET $sysacc = "T"
  147.         if      $insysop == "CoSys" then SET $cosys = "T"
  148. ; Set right charset
  149.         set     $charset = $incharset
  150. ; Set right protocol
  151.         set     $proto = $inproto
  152.         gosub   SetProto
  153.         gosub   postlog
  154.         timeout 2
  155.         echo    off
  156.         send    "^[[97x"
  157.         input   $id "\r"
  158.         timeout 300 goto bibi   ;must have it here i think..
  159.         echo    on
  160.         send    "\nPress [ENTER] to continue..."
  161.         input   $dummy "\r"
  162.         send    "\f"
  163.         IF      !EXISTS $msgsdir$name then goto OK1
  164.         Send    "\n\nYou have messages waiting.\n"
  165.         send    "==========================\n\n"
  166. OK1:    ascsend $menudir".menu0"
  167.  
  168. ;This is the main loop
  169. loop:   gosub   MainMenu
  170.         send    "Are you sure you want to log off (Enter=Y)? "
  171.         input   $cmd "\r"
  172.         IF $cmd == "N" THEN goto loop
  173.         send    "\n"
  174.         gosub   logout
  175.         goto    main
  176.  
  177.  
  178.  
  179.  
  180. ;--------------------- S U B R O U T I N E S ----------------------
  181.  
  182.  
  183. ;********************************************************
  184. ;* Initialize the system
  185. ;********************************************************
  186. init:   config  $dir"host.config"
  187.         hangup
  188.         send "\w\w\w+++\w\w\w\wATZ\n" ;Reset to saved default
  189.         converse "OK" "\w\w\w+++\w\w\w\wATX4V1M0E1\n" ;
  190.         converse "OK" "\w\w\wATS7=60\n" ;Wait one full minute for carrier
  191.         wait    "OK"
  192.         SET     $sysacc = "F"
  193.         SET     $cosys = "F"
  194.         echo    off
  195.         dwhens
  196.         timeout 0
  197.         CLI     "delete >nil: "$hold"#?"
  198.         write   $hold$sysname $sysname"\n Is running on version "$version"\n"
  199.         return
  200.  
  201.  
  202. ;********************************************************
  203. ;* Wait for CONNECT
  204. ;********************************************************
  205. connect:
  206.         dwhens
  207.         send    " \r"
  208.         gosub   skip
  209. conn0:  SET     $Local = "F"
  210.         message "\n\n\n"$sysname"   [Press '?' for help]\n"
  211.         message "Waiting on call...\n"
  212. ConnW:  timeout 300 Goto DoExitQ        ; just wait for 5 minutes
  213.         input   $char ""        ;Get one character
  214.         timeout 90 goto noconnect
  215.         IF !$char == "?" THEN goto conn1
  216.         message "\n\nSpace = Local logon\n"
  217.         goto    conn0
  218. conn1:  IF $char == " " THEN goto Local
  219.         IF $char == "R" Then goto Local2
  220. conn2:
  221.         when    "CONNECT 1200" goto conn1200
  222.         when    "CONNECT 2400" goto conn2400
  223.         when    "CONNECT 4800" goto conn4800
  224.         when    "CONNECT 9600" goto conn9600
  225.         dtenths 7
  226.         SET     $baud = $MaxBaud
  227.         send    "\n\w\wAT\w\wA\n"
  228.         timeout 90 goto noconnect
  229.         wait    "NO CARRIER"
  230. NoConnect:
  231.         write   $dir"log" "\n\n"$date"  Login Failed\n\n"
  232.         gosub   init
  233.         goto connect
  234.  
  235. conn3:  dwhens
  236.         timeout 300 goto bibi
  237.         echo    on
  238.         gosub   skip
  239.         return
  240.  
  241. Local:  message "\nStarting local logon..."
  242.         SEND    "\n+++\w\wAT\wQ1\wE0\n"
  243.         SET     $baud = "19200"
  244.         SET     $Local = "T"
  245.         goto    conn3
  246.  
  247. Local2: message "\nStarting local/remote logon.."
  248.         SEND    "\n+++\w\wAT\wQ1\wE0\n"
  249.         SET     $baud = "19200"
  250.         goto    conn3
  251.  
  252. QuitNHS:
  253.         config  "NComm:NComm.config"
  254.         end
  255.  
  256. conn1200:
  257.         SET     $baud = "1200"
  258.         goto    conn3
  259. conn2400:
  260.         SET     $baud = "2400"
  261.         goto    conn3
  262. conn4800:
  263.         SET     $baud = "4800"
  264.         goto    conn3
  265. conn9600:
  266.         SET     $baud = "9600"
  267.         goto    conn3
  268. ;**************************************************************************
  269. ; Check if another program wants NHS to quit.
  270. ; In that case, a file named NHSQUIT shuld be placed in the RAM:C directory
  271. ; you should also let the startup-sequence place DELETE there
  272. ; The place of the file may be changed.
  273. ; The Script tells it is quiting by removing this file
  274. ;***************************************************************************
  275. DoExitQ:
  276.         IF !EXISTS "RAM:C/NHSQUIT" THEN goto ConnW
  277.         Hangup  ; shouldn't be neccesary
  278.         CLI "RAM:C/DELETE RAM:C/NHSQUIT"
  279.         QUIT
  280.         END
  281.  
  282. ;********************************************************
  283. ;* Show "prelog", i.e. the picture to be shown before
  284. ;* login.
  285. ;********************************************************
  286. prelog: send    "\f"$sysname" ("$baud") up on "$date"\n"
  287.         send    $NComm" / NComm Host System (NHS) v"$version"\n"
  288.         send    "Copyright (c) 1989 Daniel Bloch (-> ver 1.3)\n"
  289.         send    "Copyright (c) 1990 & 1992 Nils-Arne Dahlberg\n\n"
  290.         ascsend $dir"prelog"
  291.         return
  292.  
  293.  
  294. ;********************************************************
  295. ;* Show "postlog", i.e. the picture to be shown after
  296. ;* login.
  297. ;********************************************************
  298. postlog:
  299.         send    "\n\n"
  300.         ascsend $dir"postlog"
  301. ;       CLI     "cookie"
  302.         return
  303.  
  304.  
  305. ;********************************************************
  306. ;* Read user name and password into the variables
  307. ;* $name and $pass.
  308. ;********************************************************
  309. Login:  echo    on
  310.         set     $NameOK = "F"
  311.         if      !EXISTS $dir"userfile" then goto FirstUser
  312.         set     $firstrun = "T"
  313.         timeout 120 goto LogSleep
  314. Loginagain:
  315.         send    "\n\nYour name: "
  316.         input   $name "\r"
  317.         IF      $name == "new" then goto NewUser
  318. NilPass:
  319.         send    "\nYour password: "
  320.         echo    off
  321.         input   $pass "\r"
  322.         echo    on
  323.         IF      $pass == "" then goto NilPass
  324.         timeout 300 goto bibi
  325.         send    "\n"
  326.         set     $SkippPassword = "F"
  327.         gosub   CheckName
  328.         if      $PassOK == "T" then return
  329.         if      !$firstrun == "T" then goto AreYouSure
  330.         set     $firstrun = "F"
  331.         send    "\n\nSorry, name or password is incorrect\n"
  332.         send    "Try again, enter NEW if you havn't logged on before.\n"
  333.         goto     Loginagain
  334. AreYouSure:
  335.         Send    "\nThat was two illegal tries.\n"
  336.         send    "Are you sure you want to log on? (N/y):"
  337.         input   $ok "\r"
  338.         send    "\n"
  339.         if      $ok == "Y" then goto Login
  340.         set     $NameOK = "F"
  341.         return
  342. ; Check if the user exists in the user-file, if it does, read all info
  343.  
  344. CheckName:
  345.         set     $NameOK = "F"
  346.         set     $PassOK = "F"
  347.         varfile $dir"userfile"
  348. repeat
  349.         readvar $x
  350.         if !$x == "#" then goto NotName
  351.         if $x == "EOF" then goto NotName
  352.         readvar $inname
  353.         if !$inname == $name then goto NotrightName
  354.         set     $NameOK = "T"
  355. ;The name DO exist, now we read in the rest of the info....
  356.         readvar $inpass
  357.         if $inpass == "EOF" then goto EOFExit
  358.      if  $SkippPassword == "F" then if !$inpass == $pass then goto EOFExit
  359.         readvar $incharset
  360.         if $incharset == "EOF" then goto EOFExit
  361.         readvar $inulcredit
  362.         if $inulcredit == "EOF" then goto EOFExit
  363.         readvar $indlcredit
  364.         if $indlcredit == "EOF" then goto EOFExit
  365.         readvar $instatus
  366.         if $instatus == "EOF" then goto EOFExit
  367.         readvar $insysop
  368.         if $insysop == "EOF" then goto EOFExit
  369.         readvar $inproto
  370.         if $inproto == "EOF" then goto EOFExit
  371.         readvar $inlast
  372.         if $inlast == "EOF" then goto EOFExit
  373.         set     $PassOK = "T"
  374.         goto    NotName
  375. ;This is where we land in case of a sudden EOF or if the password is wrong
  376. EOFExit:
  377.         set     $x = "EOF"
  378.         write   $dir"log" "\n"$date"  USERFILE CORRUPTED, pleas check!!\n"
  379. NotrightName:
  380.         if      $inname == "EOF" then set $x = $inname
  381. NotName:
  382.         until   $x == "EOF"
  383.         varfile Close
  384.         return
  385. LogSleep:
  386.         send    "\n\nLogon terminated after 2 minutes\n"
  387.         gosub   logout
  388.         goto    main
  389.  
  390. ;This is used for the first user to logon, it makes her/him to sysop
  391. FirstUser:
  392.         set     $issysop = "T"
  393.         ascsend $dir"FirstUser"
  394.         set     $NameOK = "F"
  395.         goto    NewName
  396. NewUser:
  397.         ascsend $dir"newuser"
  398.         set     $issysop = "F"
  399. Newname:
  400.         send    "\n\nYour name: "
  401.         input   $name "\r"
  402.         send    "\nIs '"$name"' Correct? (y/N)"
  403.         input   $ok "\r"
  404.         set     $SkippPassword = "F"
  405.         if      $issysop == "F" then gosub   CheckName
  406.         IF      !$ok == "y" then goto Newname
  407.         IF      $NameOK == "F" then goto NewPassIn
  408.         send    "\nSorry, the name "$name" already exists!\n"
  409.         goto    Newname
  410. NewPassIn:
  411.         send    "\nYour password: "
  412.         echo    off
  413.         input   $pass "\r"
  414.         echo    on
  415.         send    "\nOnce more... : "
  416.         echo    off
  417.         input   $pass1 "\r"
  418.         echo    on
  419.         if      $pass == $pass1 then goto NewPassOK
  420.         send    "\nSorry, line noice, enter password again\n"
  421.         goto    NewPassIn
  422. NewPassOk:
  423.         gosub   GetCharSet
  424.         set     $Incharset = $chars
  425.         gosub   GetTransProto
  426.         set     $inproto = $trans
  427.         if      !EXISTS $dir"userfile" then write $dir"userfile" "#\n"
  428.         write   $dir"userfile"  $Name"\n"
  429.         write   $dir"userfile"  $Pass"\n"
  430.         write   $dir"userfile"  $Chars"\n"
  431.         write   $dir"userfile"  "N\n"
  432.         write   $dir"userfile"  "N\n"
  433.         if      $issysop == "T" then write   $dir"userfile" "10\n"
  434.         if      $issysop == "F" then write   $dir"userfile" "1\n"
  435.         if      $issysop == "T" then write   $dir"userfile" "Sysop\n"
  436.         if      $issysop == "F" then write   $dir"userfile" "New\n"
  437.         write   $dir"userfile"  $Trans"\n"
  438.         write   $dir"userfile"  $date"\n"
  439.         write   $dir"log" $date"\n\n  New User: "$name"\n"
  440.         timeout 300 goto bibi
  441.         send    "\n"
  442. ; Here is a questionare, its simple, but it should work...
  443. ;just add and delete questions as apropriate
  444.         send    "\nBefore you enter the BBS, I would like you to answer\n"
  445.         send    "the following questions:\n"
  446.         send    "\nAddress (2/4): "
  447.         input   $tmp "\r"
  448.         write   $dir"userfile"   $tmp"\n"
  449.         send    "\nAddress (3/4): "
  450.         input   $tmp "\r"
  451.         write   $dir"userfile"   $tmp"\n"
  452.         send    "\nAddress (4/4): "
  453.         input   $tmp "\r"
  454.         write   $dir"userfile"   $tmp"\n"
  455.         send    "\nComputer: "
  456.         input   $tmp "\r"
  457.         write   $dir"userfile"   $tmp"\n"
  458.         send    "\n\nThank you, I hope you enjoy it here!\n\n"
  459.         write   $dir"userfile"  "#\n"
  460.         set     $SkippPassword = "F"
  461.         gosub   CheckName
  462.         return
  463.  
  464. ;********************************************************
  465. ;Skip junk from the modem
  466. ;********************************************************
  467. skip:   timeout 3 goto SkipOK
  468. more:   wait    ""
  469.         goto more
  470. SkipOK: timeout 300 goto bibi
  471.         return
  472.  
  473.  
  474. ;********************************************************
  475. ;* Log out
  476. ;********************************************************
  477. logout: ;CLI     "fortune"
  478.         ascsend $dir"Logout"
  479.         hangup
  480.         write   $dir"log" $date"  Logout: "$name"\n"
  481.         CLI     "delete >nil: "$holdzoo" "$hold"#?"
  482.         write   $hold$sysname $sysname"\n Runs with version "$version"\n"
  483.         if      $NameOK == "T" then gosub PreChangeUser
  484.         if      $nameOK == "T" then set $NewLast = $date
  485.         if      $NameOK == "T" then gosub ChangeUser
  486.         return
  487.  
  488. ;********************************************************
  489. ;* User sleeps
  490. ;********************************************************
  491. bibi:   send    "\n\nGood night!"
  492.         write   $dir"log" $date"  Sleep disconect\n"
  493.         gosub   logout
  494.         goto    main
  495.  
  496. ;********************************************************
  497. ;Main menu
  498. ;********************************************************
  499. MainMenu:
  500.         send    "\nCommand (? or ! for menu): "
  501.         input   $cmd "\r"
  502.         send    "\n"
  503.         IF $cmd == "?" THEN ascsend $menudir".menu0"
  504.         IF $cmd == "!" THEN ascsend $menudir"menu0"
  505.         IF $cmd == "G" THEN return
  506.         IF $cmd == "F" THEN gosub FileMenu
  507.         IF $cmd == "B" THEN gosub BullMenu
  508.         IF $cmd == "O" THEN gosub page
  509.         IF $cmd == "S" THEN gosub sysop
  510.         IF $cmd == "C" THEN gosub Comment
  511.         IF $cmd == "M" THEN gosub Messages
  512.         IF $cmd == "E" THEN gosub LetterMenu
  513.         IF $cmd == "P" THEN gosub ChangePasswd
  514.         IF $cmd == "L" THEN gosub ListUsers
  515.         IF $cmd == "V" THEN send "Version:"$version"\n"
  516.         goto    MainMenu
  517.  
  518.  
  519. ;********************************************************
  520. ;Chat with SYSOP
  521. ;********************************************************
  522. page:   send    "Calling SYSOP...\n"
  523.         send    "(press Ctrl-Z to end the conversation)\n"
  524.         beep
  525.         dtenths 3
  526.         beep
  527.         dtenths 3
  528.         beep
  529.         write   $dir"log" $date"  Paged operator\n"
  530.         when    "^Z" goto EndChat
  531. chat:   input   $dummy  "\r"
  532.         send    "\n"
  533.         goto    chat
  534. EndChat:
  535.         dlwhen
  536.         send    "\n"
  537.         return
  538.  
  539. ;*********************************************
  540. ;Change Password
  541. ;*********************************************
  542. ChangePasswd:
  543.  send   "\n\nWhat do you want to change your password to? (Enter to cancel) "
  544.         echo    off
  545.         input   $psw1 "\r"
  546.         if      $psw1 == "" then goto NoCHP
  547.         echo    on
  548.         send    "\nOne time more, thanks "
  549.         echo    off
  550.         input   $psw2 "\r"
  551.         echo    on
  552.         IF      !$psw1 == $psw2 THEN goto ChPErr
  553.         set     $pass = $psw2
  554.         gosub   PreChangeUser
  555.         set     $NewPass = $psw2
  556.         gosub   ChangeUser
  557.         return
  558.  
  559. ;*******************************************************
  560. ;Set transfer protocoll
  561. ;*******************************************************
  562. SetProto:
  563.         if      $proto == "X" then MENUSELECT TRANSFER 7 0
  564.         if      $proto == "Y" then MENUSELECT TRANSFER 7 1
  565.         if      $proto == "B" then MENUSELECT TRANSFER 7 2
  566.         if      $proto == "G" then MENUSELECT TRANSFER 7 3
  567.         if      $proto == "Z" then MENUSELECT TRANSFER 7 4
  568.         if      $proto == "K" then MENUSELECT TRANSFER 7 5
  569.         if      $proto == "E" then MENUSELECT TRANSFER 7 6
  570.         if      $proto == "J" then MENUSELECT TRANSFER 7 7
  571.         if      $proto == "Q" then MENUSELECT TRANSFER 7 8
  572.         return
  573.  
  574. ;*******************************************************
  575. ;choose characterset
  576. ;*******************************************************
  577. GetCharSet:
  578.         send    "\nWhat character set do you want to use? (L for list):"
  579.         input   $chars "\r"
  580.         send    "\n"
  581.         if      $chars == "L" then ascsend $dir"CharSets"
  582.         if      $chars == "L" then goto GetCharSet
  583.         if      $chars == "" then goto GetCharSet
  584.         varfile $dir"CharSets"
  585.         set     $y = "F"
  586. repeat
  587.         readvar $x
  588.         if      !$chars == $x then goto NextChars
  589.         set     $x = "EOF"
  590.         set     $y = "T"
  591. NextChars:
  592.         until   $x == "EOF"
  593.         varfile close
  594.         if      $y == "T" then goto CharsetOK
  595.         send    "\nI don't support charset "$chars". Please reenter.\n"
  596.         goto    GetCharSet
  597. CharsetOK:
  598.         return
  599.  
  600. ;*******************************************************
  601. ;Get transfer protocoll
  602. ;*******************************************************
  603. GetTransProto:
  604.         send    "\nWhat Transfer protocol do you want to use? (L for list):"
  605.         input   $trans "\r"
  606.         send    "\n"
  607.         if      $trans == "L" then ascsend $dir"TransProtos"
  608.         if      $trans == "L" then goto GetTransProto
  609.         if      $trans == "" then goto GetTransProto
  610. CheckProto:
  611.         varfile $dir"TransProtosS"
  612.         set     $y = "F"
  613. repeat
  614.         readvar $x
  615.         if      !$trans == $x then goto NextTrans
  616.         set     $x = "EOF"
  617.         set     $y = "T"
  618. NextTrans:
  619.         until   $x == "EOF"
  620.         varfile close
  621.         if      $y == "T" then goto TransOK
  622.         send    "\nI don't support protocol "$trans". Please reenter.\n"
  623.         goto GetTransProto
  624. TransOK:
  625.         return
  626.  
  627. ;*******************************************************
  628. ;Prepeare variables for changeuser
  629. ;*******************************************************
  630. PreChangeUser:
  631.         Set     $newpass = $pass
  632.         Set     $newcharset = $charset
  633.         Set     $newULCredit = $ULCredit
  634.         Set     $newDLCredit = $DLCredit
  635.         Set     $newStatus = $Status
  636.         Set     $newSysop = $insysop
  637.         Set     $newProto = $Proto
  638.         Set     $newLast = $inlast
  639.         return
  640.  
  641. ;*******************************************************
  642. ;Change a entry in 'userfile'
  643. ;*******************************************************
  644. ChangeUser:
  645.         set     $CUOK = "F"
  646.         cli     "copy >nil: "$dir"userfile to "$dir"userfile.old"
  647.         cli     "delete >nil: "$dir"userfile"
  648.         varfile $dir"userfile.old"
  649. repeat
  650.         readvar $x
  651.         write   $dir"userfile" $x"\n"
  652.         if !$x == "#" then goto CUNotName
  653.         if $x == "EOF" then goto CUNotName
  654.         readvar $inname
  655.         set $x = $inname
  656.         if $x == "EOF" then goto CUNotName
  657.         write   $dir"userfile" $inname"\n"
  658.         if !$inname == $name then goto CUNotrightName
  659. ;The name DO exist, now we read in the rest of the info....
  660.         readvar $inpass
  661.         write   $dir"userfile" $newpass"\n"
  662.         if $inpass == "EOF" then goto CUEOFExit
  663.         readvar $incharset
  664.         write   $dir"userfile" $newcharset"\n"
  665.         if $incharset == "EOF" then goto CUEOFExit
  666.         readvar $inulcredit
  667.         write   $dir"userfile" $newULCredit"\n"
  668.         if $inulcredit == "EOF" then goto CUEOFExit
  669.         readvar $indlcredit
  670.         write   $dir"userfile" $newDLCredit"\n"
  671.         if $indlcredit == "EOF" then goto CUEOFExit
  672.         readvar $instatus
  673.         write   $dir"userfile" $newStatus"\n"
  674.         if $instatus == "EOF" then goto CUEOFExit
  675.         readvar $insysop
  676.         write   $dir"userfile" $newSysop"\n"
  677.         if $insysop == "EOF" then goto CUEOFExit
  678.         readvar $inproto
  679.         write   $dir"userfile" $newProto"\n"
  680.         if $inproto == "EOF" then goto CUEOFExit
  681.         readvar $inlast
  682.         write   $dir"userfile" $newLast"\n"
  683.         if $inlast == "EOF" then goto EOFExit
  684.         set     $CUOK = "T"
  685.         goto    CUNotName
  686. ;This is where we land in case of a sudden EOF
  687. CUEOFExit:
  688.         set     $x = "EOF"
  689.         write   $dir"log" "\n"$date"  USERFILE CORRUPTED, pleas check!!\n"
  690. CUNotrightName:
  691.         if      $inname == "EOF" then set $x = $inname
  692. CUNotName:
  693.         until   $x == "EOF"
  694.         varfile Close
  695.  
  696.         return
  697.  
  698. ;*******************************************************
  699. ;List users who have logged in
  700. ;*******************************************************
  701. ListUsers:
  702.         send    "\nUsers up to "$date"\n"
  703.         varfile $dir"userfile"
  704. repeat
  705.         readvar $x
  706.         if !$x == "#" then goto LUNotName
  707.         if $x == "EOF" then goto LUNotName
  708.         readvar $x
  709.         if $x == "EOF" then goto LUNotName
  710.         send    "\nName="$x"\n"
  711.         readvar $x
  712.         if $x == "EOF" then goto LUNotName
  713. if $sysacc == "T" then send "Password="$x"\n"
  714.         readvar $x
  715.         if $x == "EOF" then goto LUNotName
  716. if $sysacc == "T" then send "Charset="$x"\n"
  717.         readvar $x
  718.         if $x == "EOF" then goto LUNotName
  719. if $sysacc == "T" then send "ULCredits="$x"\n"
  720.         readvar $x
  721.         if $x == "EOF" then goto LUNotName
  722. if $sysacc == "T" then send "DLCredits="$x"\n"
  723.         readvar $x
  724.         if $x == "EOF" then goto LUNotName
  725.         readvar $x
  726.         if $x == "EOF" then goto LUNotName
  727.         send    "Userlevel="$x"\n"
  728.         readvar $x
  729.         if $x == "EOF" then goto LUNotName
  730. if $sysacc == "T" then send "Protcolls="$x"\n"
  731.         readvar $x
  732.         if $x == "EOF" then goto LUNotName
  733.         send    "Last on="$x"\n"
  734.         readvar $x
  735.         if $x == "EOF" then goto LUNotName
  736.         send    "Address="$x"\n"
  737.         readvar $x
  738.         if $x == "EOF" then goto LUNotName
  739.         send    "Address="$x"\n"
  740.         readvar $x
  741.         if $x == "EOF" then goto LUNotName
  742.         send    "Address="$x"\n"
  743.         readvar $x
  744.         if $x == "EOF" then goto LUNotName
  745.         send    "Computer="$x"\n"
  746. LUNotName:
  747.         until   $x == "EOF"
  748.         varfile Close
  749.  
  750.         return
  751.  
  752. ;********************************************************
  753. ;File menu
  754. ;********************************************************
  755. FileMenu:
  756.         send    "\nFile command (? or ! for menu): "
  757.         input   $cmd "\r"
  758.         send    "\n"
  759.         IF $cmd == "?" THEN ascsend $menudir".menu1"
  760.         IF $cmd == "!" THEN ascsend $menudir"menu1"
  761.         IF $cmd == ""  THEN return
  762.         IF $cmd == "Q" THEN return
  763.         IF $cmd == "L" THEN gosub ListFiles
  764.         IF $cmd == "D" THEN gosub Download
  765.         IF $cmd == "U" THEN gosub Upload
  766.         IF $cmd == "V" THEN gosub ViewZOO
  767.         IF $cmd == "S" THEN gosub QListFiles
  768.         IF $cmd == "EXT" THEN gosub ExtractZOO
  769.         IF $cmd == "ADD" THEN gosub AddFile
  770.         IF $cmd == "DEL" THEN gosub Remove
  771.         IF $cmd == "DIR" THEN gosub Show
  772.         IF $cmd == "GET" THEN gosub GetHold
  773.         goto    FileMenu
  774.  
  775.  
  776. ;********************************************************
  777. ;List files in download directory
  778. ;********************************************************
  779. ListFiles:
  780.         send    "\n"
  781.         CLI     $list" "$dldir
  782.         return
  783.  
  784.  
  785. ;********************************************************
  786. ;List files in download directory quick
  787. ;********************************************************
  788. QListFiles:
  789.         send    "\n"
  790.         CLI     $qlist" "$dldir
  791.         return
  792.  
  793.  
  794. ;********************************************************
  795. ;Download file
  796. ;********************************************************
  797. Download:
  798.         IF $DLCredit == "Y" then goto DownlOK1
  799.         send    "\nNo files up, no files down....\n"
  800.         return
  801. DownlOK1:
  802.         send    "\nFilename: "
  803.         input   $file "\r"
  804.         send    "\n"
  805.         IF $file == "" THEN return
  806.         IF exists $dldir$file THEN goto DownlOK
  807.         send    "The file '"$file"' does not exist!\n"
  808.         return
  809. DownlOK:
  810.         send    "Choose protocol (return for "$proto"):"
  811.         input   $nproto "\r"
  812.         send    "\n"
  813.         IF $nproto == "" THEN goto XDownload
  814.         set     $trans = $nproto
  815.         gosub   CheckProto
  816.         set     $proto = $trans
  817.         gosub   SetProto
  818. XDownload:
  819.         send    "Waiting...\n"
  820.         upload  $dldir$file
  821.         write   $dir"log" $date"  Downloaded "$file" (Xmodem)\n"
  822.         Set     $DLCredit = "N"
  823.         return
  824.  
  825. ;********************************************************
  826. ;Upload file
  827. ;********************************************************
  828. Upload:
  829.         send    "\nFilename: "
  830.         input   $file "\r"
  831.         send    "\n"
  832.         IF $file == "" THEN return
  833.         IF $ULCredit == "Y" then goto ULOK
  834.         send    "\n\nSorry, you have no upload-credit..\n"
  835.         return
  836. ULOK:
  837.         IF !EXISTS $uldir$file THEN goto UploadOK
  838.         send    "The file '"$file"' allready exists!\n"
  839.         return
  840. UploadOK:
  841.         send    "Describe the file: "
  842.         input   $desc "\r"
  843.         send    "\n"
  844. GetProto:
  845.         send    "Choose protocol (return for "$proto"):"
  846.         input   $nproto "\r"
  847.         send    "\n"
  848.         IF $nproto == "" THEN goto XUpload
  849.         set     $trans = $nproto
  850.         gosub   CheckProto
  851.         set     $proto = $trans
  852.         gosub   SetProto
  853. XUpload:
  854.         send    "Waiting...\n"
  855.         download $uldir$file
  856.         write   $dir"log" $date"  Uploaded "$file" (Xmodem)\n"
  857.         IF !$desc == "" THEN CLI "Filenote file "$uldir$file" comment \""$desc"\""
  858.         set     $DLCredit = "Y"
  859.         return
  860.  
  861. ;********************************************************
  862. ;Bulletin menu
  863. ;********************************************************
  864. BullMenu:
  865.         ascsend $menudir".menu2"
  866. bull:   send    "\nBulletin number (? or ! for menu): "
  867.         input   $cmd "\r"
  868.         send    "\n"
  869.         IF $cmd == "?"  THEN goto BullMenu
  870.         IF $cmd == "!"  THEN goto BullMe
  871.         IF $cmd == ""   THEN return
  872.         IF $cmd == "Q"  THEN return
  873.         IF exists $bulldir"bull"$cmd THEN goto ShowBull
  874.         send    "Illegal bulletin-number!\n"
  875.         goto    bull
  876. BullMe:
  877.         ascsend $menudir"menu2"
  878.         goto    bull
  879. ShowBull:
  880.         send    "\n"
  881.         ascsend $bulldir"bull"$cmd
  882.         write   $dir"log" $date"  Read bulletin #"$cmd"\n"
  883.         goto    bull
  884.  
  885.  
  886. ;********************************************************
  887. ;Sysop menu
  888. ;********************************************************
  889. ;rewrite, add possibility for userupdate
  890. SysopMenu:
  891.         ascsend $menudir"menu3"
  892. Sysop:
  893.         IF $sysacc == "T" THEN goto SysOK
  894.         send    "Nope, you're not allowed!\n"
  895.         write   $dir"log" $date"  Attempted restricted command\n"
  896.         return
  897. SysOK:  send    "\nSysop Command (? for menu): "
  898.         input   $cmd "\r"
  899.         send    "\n"
  900.         IF $cmd == "?" THEN goto SysopMenu
  901.         IF $cmd == "Q" THEN return
  902.         IF $cmd == ""  THEN return
  903.         IF $cmd == "L" THEN goto ListLog
  904.         IF $cmd == "R" THEN goto Priv
  905.         IF $cmd == "D" THEN goto DeleteLog
  906.         IF $cmd == "C" THEN goto DeleteComm
  907.         IF $cmd == "B" THEN goto RemoteBackup
  908.         IF $cmd == "S" THEN goto StartScript
  909.         IF $cmd == "U" THEN goto UserUpdate
  910.  
  911. ;********************************************************
  912. ;Execute DOS command
  913. ;********************************************************
  914.         write   $dir"log" $date"  Executed DOS command: "$cmd"\n"
  915.         send    "\n Commands that can be executed from remote are:\n"
  916.         CLI     "C:ls "$doscomm
  917.         if      $local == "F" then goto NoLocalDos
  918.         CLI     $cmd
  919.         goto sysok
  920. NoLocalDos:
  921.         CLI     $doscomm$cmd
  922.         goto sysok
  923.  
  924. NoDos:
  925.         send    "\n\nOnly available in local mode, sorry!!\n\n"
  926.         goto sysok
  927.         goto    sysok
  928.  
  929.  
  930. ;********************************************************
  931. ;Delete log file
  932. ;********************************************************
  933. DeleteLog:
  934.         if      $local == "F" then goto NoDos
  935.         IF      $cosys == "T" then goto sysok
  936.         send    "\nSure? (Enter=N)? "
  937.         input   $cmd "\r"
  938.         send    "\n"
  939.         IF !$cmd == "Y" THEN goto sysok
  940.         CLI     "delete "$dir"log"
  941.         write   $dir"log" $date"  Started new log\n"
  942.         goto sysok
  943.  
  944.  
  945. ;********************************************************
  946. ;Delete private messages
  947. ;********************************************************
  948. DeleteComm:
  949.         if      $local == "F" then goto NoDos
  950.         IF      $cosys == "T" then goto sysok
  951.         send    "\nDelete all private messages (Enter=N)? "
  952.         input   $cmd "\r"
  953.         send    "\n"
  954.         IF !$cmd == "Y" then goto sysok
  955.         CLI "delete >nil: "$msgsdir"Comments"
  956.         write   $dir"log" $date"  Private messages deleted\n"
  957.         goto sysok
  958.  
  959.  
  960. ;********************************************************
  961. ;List log file
  962. ;********************************************************
  963. ListLog:
  964.         send    "\n"
  965.         ascsend $dir"log"
  966.         write   $dir"log" $date"  Listed Log\n"
  967.         goto sysok
  968.  
  969.  
  970. ;********************************************************
  971. ;Remote Backup
  972. ;********************************************************
  973. RemoteBackup:
  974.         send    "\nRemote Backup started.\n"
  975.         CLI     "run >nil: <nil: copy ncomm:host to df1:host all clone"
  976.         write   $dir"log" $date"  Started Remote Backup\n"
  977.         goto sysok
  978.  
  979. ;********************************************************
  980. ;Start a script
  981. ;********************************************************
  982. StartScript:
  983.         Send    "\n\nThis is a Point of No Return!!!\n\n"
  984.         send    "When the script is started there is _NO WAY BACK_\n\n"
  985.         Send    "Continue? (Enter=N)"
  986.         input   $Cont "\r"
  987.         If      $cont == "Y" THEN GOTO StartS1
  988.         goto    sysok
  989. StartS1:
  990.         CHAIN   $dir"A.Script"
  991.  
  992.  
  993.  
  994. ;********************************************************
  995. ;Uppdate user
  996. ;********************************************************
  997. UserUpdate:
  998.         set     $tmpsysop = $insysop
  999.         set     $tmplast = $inlast
  1000.         set     $tmpname = $name
  1001.         send    "\nWhat user do you eant to update/change? "
  1002.         input   $name "\r"
  1003.         send    "\n"
  1004.         set     $SkippPassword = "T"
  1005.         gosub   CheckName
  1006.         if      $NameOK == "T" then goto UserUpdateOK
  1007.         send    "\n"$name"Doesn't exist!\n"
  1008.         goto    LeaveUserUpdate
  1009. UserUpdateOK:
  1010. if $insysop == "Sysop" then if !$tmpsysop == "Sysop" then goto LeaveUserUpdate
  1011.         send    "\n"$name" is '"$insysop"'\n"
  1012.   send    "\nUpdate to: (1 = New 2 = Normal User, 9 = CoSysop, 10 = Sysop ) "
  1013.         input   $level "\r"
  1014.         if      $level == "1" then set $newSysop = "New"
  1015.         if      $level == "1" then goto LevelOK
  1016.         if      $level == "2" then set $newSysop = "Normal"
  1017.         if      $level == "2" then goto LevelOK
  1018.         if      $level == "9" then set $newSysop = "Cosys"
  1019.         if      $level == "9" then goto LevelOK
  1020.  if $level == "10" then if $tmpsysop == "Sysop" then set $newSysop = "Sysop"
  1021.  if $level == "10" then if $tmpsysop == "Sysop" then goto LevelOK
  1022.         goto    UserUpdateOK
  1023. LevelOK:
  1024.         send    "\nULCredits="$inULCredit", should be? (Y/N) "
  1025.         input   $inULCredit "\r"
  1026.  if !$inULCredit == "N" then if !$inULCredit == "Y" then goto LevelOK
  1027. ULOK:
  1028.         send    "\nDLCredits="$inDLCredit", should be? (Y/N) "
  1029.         input   $inDLCredit "\r"
  1030.  if !$inDLCredit == "N" then if !$inDLCredit == "Y" then goto ULOK
  1031.         Set     $newpass = $inpass
  1032.         Set     $newcharset = $incharset
  1033.         Set     $newULCredit = $inULCredit
  1034.         Set     $newDLCredit = $inDLCredit
  1035.         Set     $newStatus = $level
  1036.         Set     $newProto = $inProto
  1037.         Set     $newLast = $inlast
  1038.         gosub   ChangeUser
  1039. LeaveUserUpdate:
  1040.         set     $insysop = $tmpsysop
  1041.         set     $inlast = $tmplast
  1042.         set     $name = $tmpname
  1043.         goto    sysop
  1044.  
  1045. ;********************************************************
  1046. ;Comment to sysop
  1047. ;********************************************************
  1048. Comment:
  1049.         send    "\n\nSubject: "
  1050.         input   $subject "\r"
  1051.         IF $subject == "" then return
  1052.         SET     $to = "Sysop"
  1053.         SET     $mfile = "Comments"
  1054.         SET     $mtype = "Comment to sysop"
  1055.         goto    Writemess
  1056.  
  1057. ;********************************************************
  1058. ;Messages menu
  1059. ;********************************************************
  1060. Messages:
  1061.         ascsend $menudir".menu5"
  1062. Mess1:  send    "\nMessage command (? or ! for menu): "
  1063.         input   $cmd "\r"
  1064.         send    "\n"
  1065.         IF $cmd == "?"  THEN goto Messages
  1066.         IF $cmd == "!"  THEN goto Mess2
  1067.         IF $cmd == ""   THEN return
  1068.         IF $cmd == "Q"  THEN return
  1069.         IF $cmd == "R"  THEN goto Mess3
  1070.         IF $cmd == "W"  THEN goto Mess3
  1071.         GOTO    Mess1
  1072. Mess3:
  1073.         send    "\nArea number (? or ! for menu): "
  1074.         input   $area "\r"
  1075.         IF $area == "?"  THEN goto Mess3a
  1076.         IF $area == "!" THEN goto Mess3b
  1077.         send    "\n"
  1078.         IF exists $msgsdir"messages"$area THEN goto Mess4
  1079.         send    "Illegal Area-number!\n"
  1080.         goto    Mess1
  1081. Mess3a:
  1082.         ascsend $menudir".menu5"
  1083.         goto    Mess3
  1084. Mess3b:
  1085.         ascsend $menudir"menu5"
  1086.         goto    Mess3
  1087. Mess2:  ascsend $menudir"menu5"
  1088.         goto    Mess1
  1089. Mess4:  IF $cmd =="R"   THEN goto Read
  1090.         gosub   Enter
  1091.         goto    Mess1
  1092.  
  1093. ;********************************************************
  1094. ;Enter message
  1095. ;********************************************************
  1096. Enter:
  1097.         send    "\nTo (Enter=ALL): "
  1098.         input   $to "\r"
  1099.         IF $to == "" then SET $to = "ALL"
  1100.         send    "\nSubject: "
  1101.         input   $subject "\r"
  1102.         IF $subject == "" then return
  1103.         SET     $mfile = "messages"$area
  1104.         SET     $mtype = "Area"$area
  1105.         goto    Writemess
  1106.  
  1107.  
  1108.  
  1109. ;********************************************************
  1110. ;Read public messages
  1111. ;********************************************************
  1112. Read:
  1113.         ascsend $msgsdir"messages"$area
  1114.         write   $dir"log" $date"  Read message in area "$area"\n"
  1115.         goto    Mess1
  1116.  
  1117.  
  1118. ;********************************************************
  1119. ;Read private messages
  1120. ;********************************************************
  1121. Priv:   IF !EXISTS $msgsdir"comments" then goto sysok
  1122.         ascsend $msgsdir"comments"
  1123.         write   $dir"log" $date"  Read private messages.\n"
  1124.         goto    sysok
  1125.  
  1126. ;********************************************************
  1127. ;Handle NO CARRIER
  1128. ;********************************************************
  1129. NoCarrier:
  1130.         write   $dir"log" $date"  CARRIER LOST\n"
  1131.         gosub   logout
  1132.         goto    main
  1133.  
  1134.  
  1135. ;********************************************************
  1136. ;View ZOO file
  1137. ;********************************************************
  1138. ViewZOO:
  1139.         send    "\nGive the name of the  "$arch" file: "
  1140.         input   $file "\r"
  1141.         send    "\n"
  1142.         IF $file == "" then return
  1143.         IF exists $dldir$file then goto ViewOK
  1144.         IF exists $dldir$file$arch then goto ViewOK
  1145.         send    "The file does not exist!\n"
  1146.         return
  1147. ViewOK: write   $dir"log" $date" "$arch" view of "$file"\n"
  1148.         CLI     $alist$dldir$file
  1149.         return
  1150.  
  1151.  
  1152. ;********************************************************
  1153. ;Extract ZOO file
  1154. ;********************************************************
  1155. ExtractZOO:
  1156.         IF $DLCredit == "Y" then goto DownlOK1
  1157.         send    "\nNo files up, no files down....\n"
  1158.         return
  1159. ExtraZ1:
  1160.         send    "\nGive the name of the  "$arch" file: "
  1161.         input   $file "\r"
  1162.         send    "\n"
  1163.         IF $file == "" then return
  1164.         IF exists $dldir$file then goto ExtOK
  1165.         IF exists $dldir$file$arch then goto ExtOK
  1166.         send    "The file does not exist!\n"
  1167.         return
  1168. ExtOK:  send    "\nGive the name of the file(s) to extract [Enter=all]: "
  1169.         input   $files "\r"
  1170.         write   $dir"log" $date"  Extracted "$file" "$files"\n"
  1171.         send    "\n"
  1172.         CLI     "delete >nil: "$tmp
  1173.         write   $tmp "CD "$hold"\n"
  1174.         write   $tmp $aextract$dldir$file" "$files"\n"
  1175.         CLI     "execute "$tmp
  1176.         return
  1177.  
  1178.  
  1179. ;********************************************************
  1180. ;Add file to HOLD
  1181. ;********************************************************
  1182. AddFile:
  1183.         IF $DLCredit == "Y" then goto DownlOK1
  1184.         send    "\nNo files up, no files down....\n"
  1185.         return
  1186. AddF1:
  1187.         send    "\nFilename: "
  1188.         input   $file "\r"
  1189.         send    "\n"
  1190.         IF $file == "" then return
  1191.         IF exists $dldir$file then goto AddOK
  1192.         send    "The file '"$file"' does not exist!\n"
  1193.         return
  1194. AddOK:  CLI     "COPY "$dldir$file" "$hold
  1195.         write   $dir"log" $date"  Added "$file"\n"
  1196.         return
  1197.  
  1198.  
  1199. ;********************************************************
  1200. ;Delete file(s) from HOLD
  1201. ;********************************************************
  1202. Remove: send    "\nFilename: "
  1203.         input   $file "\r"
  1204.         send    "\n"
  1205.         IF $file == "" then return
  1206.         write   $dir"log" $date"  Deleted "$file"\n"
  1207.         CLI     "delete \""$hold$file"\""
  1208.         return
  1209.  
  1210.  
  1211. ;********************************************************
  1212. ;List files in HOLD directory
  1213. ;********************************************************
  1214. Show:
  1215.         send    "\n"
  1216.         CLI     $list" "$hold
  1217.         return
  1218.  
  1219.  
  1220. ;********************************************************
  1221. ;Download files in HOLD directory
  1222. ;********************************************************
  1223. GetHold:
  1224.         send    "Wait while I pack the files...\n"
  1225.         CLI     "delete >nil: "$holdzoo
  1226.         CLI     $apack$holdzoo" "$hold"*"
  1227. GetPr:
  1228.         send    "Choose protocol (return for "$proto"):"
  1229.         input   $nproto "\r"
  1230.         send    "\n"
  1231.         IF $nproto == "" THEN goto XGet
  1232.         set     $trans = $nproto
  1233.         gosub   CheckProto
  1234.         set     $proto = $trans
  1235.         gosub   SetProto
  1236. XGet:
  1237.         send    "Waiting...\n"
  1238.         upload  $holdzoo
  1239.         write   $dir"log" $date"  Downloaded HOLD"$arch" (Xmodem)\n"
  1240.         CLI     "delete >nil: "$holdzoo
  1241.         return
  1242.  
  1243. ;********************************************************
  1244. ;Letter menu, private mail
  1245. :********************************************************
  1246. LetterMenu:
  1247.         send    "\nLetter command (? or ! for menu): "
  1248.         input   $cmd "\r"
  1249.         send    "\n"
  1250.         IF $cmd == "?" THEN ascsend $menudir".menu4"
  1251.         IF $cmd == "!" THEN ascsend $menudir"menu4"
  1252.         IF $cmd == ""  THEN return
  1253.         IF $cmd == "Q" THEN return
  1254.         IF $cmd == "R" THEN gosub ReadLetter
  1255.         IF $cmd == "W" THEN gosub WriteLetter
  1256.         IF $cmd == "E" THEN gosub DeleteLetter
  1257.         IF $cmd == "G" THEN gosub GrabMail
  1258.         goto    LetterMenu
  1259.  
  1260. ;********************************************************
  1261. ;Enter message
  1262. ;********************************************************
  1263. WriteLetter:
  1264.         send    "\nTo: (enter to abort) "
  1265.         input   $to "\r"
  1266.         IF      $to == "" then return
  1267.         IF      EXISTS $userdir$to THEN goto WLCont
  1268.         send    "There is no user with the name "$to
  1269.         goto    WriteLetter
  1270. WLCont: send    "\nSubject: (enter to abort) "
  1271.         input   $subject "\r"
  1272.         IF      $subject == "" then return
  1273.         SET     $mtype = "Private"
  1274.         SET     $mfile = $to
  1275.         goto    writemess
  1276.  
  1277.  
  1278.  
  1279. ;********************************************************
  1280. ;Read private messages
  1281. ;********************************************************
  1282. ReadLetter:
  1283.         IF !EXISTS $msgsdir$name then goto NoLetter
  1284.         ascsend $msgsdir$name
  1285.         write   $dir"log" $date"  Read private letters \n"
  1286.         return
  1287. NoLetter:
  1288.         send "No private mail to "$name"\n"
  1289.         return
  1290.  
  1291. ;********************************************************
  1292. ;Delete private messages
  1293. ;********************************************************
  1294. DeleteLetter:
  1295.         send    "\nErase all private mail? (Enter=N) "
  1296.         input   $cmd "\r"
  1297.         send    "\n"
  1298.         IF !$cmd == "Y" then return
  1299.         CLI "delete >nil: \""$msgsdir$name"\""
  1300.         write   $dir"log" $date"  Private messages deleted\n"
  1301.         return
  1302.  
  1303.  
  1304. ;********************************************************
  1305. ;Grab all mail
  1306. ;********************************************************
  1307. GrabMail:
  1308.         CLI "copy >nil: \""$msgsdir$name"\" to \""$hold"\""
  1309.         send    "\n\nAdd messageareas (enter=Y) ?"
  1310.         input   $cmd "\r"
  1311.         send    "\n\n"
  1312.  if !$cmd == "N" then CLI "copy >nil: \""$msgsdir"messages#?\" to \""$hold"\""
  1313.         send    "\n\nAdd bulletins (enter=Y) ?"
  1314.         input   $cmd "\r"
  1315.         send    "\n\n"
  1316.  if !$cmd == "N" then CLI "copy >nil: \""$bulldir"bull#?\" to \""$hold"\""
  1317.         write   $dir"log" $date"  Fetched mail\n"
  1318.         goto    gethold
  1319.  
  1320. ;********************************************************
  1321. ;Enter message
  1322. ; $to           = to who
  1323. ; $mfile        = to wich file
  1324. ; $mtype        = type of message
  1325. ;********************************************************
  1326. WriteMess:
  1327.         CLI     "c:delete >NIL: RAM:__NHSX__TMP__"
  1328.         cli     "c:Copy >nil: \""$msgsdir$mfile"\" to RAM:__NHSX__TMP__"
  1329.         SET     $header = "\n\nFrom: "$name"\n"
  1330.         SET     $header = $header"To: "$to"\nSubject: "$subject"\n"
  1331.         SET     $header = $header"Date: "$date"\n"
  1332.         SET     $header = $header"-------------------------------\n"
  1333.         write   "RAM:__NHSX__TMP__" $header
  1334.         send    $header
  1335.         send    "[Write in your message below; "
  1336.         send    "end with Ctrl-Z on a blank line]\n\n"
  1337.         when    "^Z" goto endWL
  1338. WLent:  input   $line "\r"
  1339.         send    "\n"
  1340.         write   "RAM:__NHSX__TMP__" $line"\n"
  1341.         goto    WLent
  1342. EndWL:  dlwhen
  1343.         cli     "c:Copy >nil: RAM:__NHSX__TMP__ to \""$msgsdir$mfile"\""
  1344.         send    "\nMessage saved!^G\n"
  1345.         write   $dir"log" $date"  Entered "$mtype" message\n"
  1346.         return
  1347.  
  1348.  
  1349.